package com.fpd.model.ro;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fpd.enums.AddressResultEnum;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
public class CustomerBaseInfoRO extends PageRO {

	private static final long serialVersionUID = 5503782478968002066L;

	/**
	 * 主键ID
	 */
	private String id;

	private String ids;
	
	private List<String> idList;

	/**
	 * 手机号
	 */
	private String mobile;

	/**
	 * 创建时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date createTime;

	/**
	 * 更新时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date updateTime;

	/**
	 * 客户号
	 */
	private String custNo;

	/**
	 * 客户号集合
	 */
	private List custNoList;

	/**
	 * 合同号
	 */
	private String contractNumber;

	/**
	 * 客户姓名
	 */
	private String custName;

	/**
	 * 身份证号
	 */
	private String custIdNumber;

	/**
	 * 性别（0：男；1：女；2：保密）
	 */
	private String custSex;
	/**
	 * 年龄段
	 */
	@ApiModelProperty(value = "年龄段(1:18~25岁，2：26~35岁，3：36~45岁，4：46岁及以上)", example = "", hidden = false)
	private int agePart;
	/**
	 * 出生日期
	 */
	private String birthday;

	/**
	 * 户籍地址
	 */
	private String registerAddress;

	/**
	 * 手机号码
	 */
	private String phoneNumber;

	/**
	 * 电子邮箱
	 */
	private String email;

	/**
	 * 现居住地
	 */
	private String liveAddress;

	/**
	 * 家庭电话
	 */
	private String homePhone;

	/**
	 * 单位名称
	 */
	private String unitName;

	/**
	 * 单位地址
	 */
	private String unitAddress;

	/**
	 * 单位电话
	 */
	private String unitPhone;

	/**
	 * 划扣银行卡号
	 */
	private String bankNumber;

	/**
	 * 划扣银行名称
	 */
	private String bankName;

	/**
	 * 0:不重复 1：重复委案
	 */
	private String  isRepent;
	
	/**
	 * 0:不共债 1：共债
	 */
	private String  isGz;
	
	/**
	 * 是否申请com.fpd.model.ro.CallDispatchModelRO（0：否；1：是）
	 */
	@ApiModelProperty(value = "是否申请留案（0：否；1：是）")
	private Integer isLeaveCase;

	/**
	 * 起始逾期天数
	 */
	@ApiModelProperty(value = "起始逾期天数")
	private int yuqiDayBegin;

	/**
	 * 结束逾期天数
	 */
	@ApiModelProperty(value = "结束逾期天数")
	private int yuqiDayEnd;

	/**
	 * 逾期天数据
	 */
	@ApiModelProperty(value = "逾期天数据")
	private int yuQiDay;

	/**
	 * 起始年龄
	 */
	@ApiModelProperty(value = "起始年龄")
	private Integer ageStart;

	/**
	 * 结束年龄
	 */
	@ApiModelProperty(value = "结束年龄")
	private Integer ageEnd;

	private Integer leaveCount;

	private Integer leaveState;
	
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date leaveDate;//申请留案时间
	
	/**
	 * 留案时间起始
	 */
	@ApiModelProperty(value = "留案时间起始")
	private String leaveDateStart;

	/**
	 * 留案时间结束
	 */
	@ApiModelProperty(value = "留案时间结束")
	private String leaveDateEnd;

	/**
	 * 起始逾期金额
	 */
	@ApiModelProperty(value = "起始逾期金额")
	private BigDecimal yuqiAmountBegin;

	/**
	 * 结束逾期金额
	 */
	@ApiModelProperty(value = "结束逾期金额")
	private BigDecimal yuqiAmountEnd;

	/**
	 * 逾期金额
	 */
	@ApiModelProperty(value = "逾期金额")
	private BigDecimal yuqiAmount;

	/**
	 * 委案时间起始
	 */
	@ApiModelProperty(value = "委案时间起始")
	private String beginTimeCaseStart;

	/**
	 * 委案时间结束
	 */
	@ApiModelProperty(value = "委案时间结束")
	private String beginTimeCaseEnd;

	/**
	 * 客服ID
	 */
	@ApiModelProperty(value = "客服ID")
	private String userId;

	/**
	 * 案件状态
	 */
	@ApiModelProperty(value = "案件状态",example = "（0:未分配，1：已分配，5：回款中；6：回款完成；7:历史记录）")
	private String caseState;

	/**
	 * 案件状态
	 */
	@ApiModelProperty(value = "客户号/合同号/客户姓名进行查询")
	private String integratedQuery;

	//委托方
	private String thirdParty;
	
	//委托方
	private String noThirdParty;

	private String groupLeaderId;//组长id？？？

	private String ossPath;// 保存到OSS上的路径前缀

	@ApiModelProperty(value = "客户分类（1：全部还款客户；2：部分还款客户；3：待跟进客户；4：拒绝回款客户；）")
	private String custClassify;

	@ApiModelProperty(value = "地址类型(1:户籍地址;2:居住地址;3:工作地址;4:其他地址;)")
	private String addressType;

	@ApiModelProperty(value = "日期类型(1:今日 2：本周 3：本月)")
	private String dateType;

	@ApiModelProperty(value = "发函审核状态 0：未审核 1：审核通过")
	private String postState;

	/**
	 * 逾期金额
	 */
	@ApiModelProperty(value = "逾期金额")
	private String yuQiAmount;

	/**
	 *  客服名称
	 */
	@ApiModelProperty(value = "客服名称")
	private String trueName;
	/**
	 * 分组组名
	 */
	@ApiModelProperty(value = "分组组名")
	private String groupName;
	/**
	 * 数据分析
	 */
	private Integer isAnalysis;

	/**
	 * 身份校验
	 */
	private Integer idCheckState;

	/**
	 * 信息核对(0:未核对 1：已核对)
	 */
	@ApiModelProperty(value = "信息核对",example = "信息核对(0:未核对 1：已核对 2：无法核对)")
	private Integer infoCheck;
	
	//第二联系人关系id
	private String secondRelationId;

	//第二联系人关系
	private String secondRelation;

	//第二联系人姓名
	private String secondName;

	//第二联系人手机号
	private String secondPhone;
	/**
	 * 批次号
	 */
	private String batchNo;
	/**
	 *逾期天数
	 */
	private int yuqiDay;
	/**
	 * 客服名称
	 */
	private String truename;
	/**
	 * 客服发函组长审核状态（0：未通过；1：已通过）
	 */
	private int checkState;
	/**
	 * 跟进提醒(即时跟进：0    逾期跟进：1)
	 */
	private int followState;
	/**
	 * 跟进提醒(即时跟进：0    逾期跟进：1)
	 */
	private int followTime;


	//case_type案件类型（1：正常案件；2：冲裁案件；3：其他案件）
	private int caseType;

	@ApiModelProperty(value = "回款状态（0:回款中，1：回款驳回，2：回款完成；）")
	private String returnedMoneyState;

	@ApiModelProperty(value = "核对状态(核对状态：1：核对无误 2：无法核对)")
	private String checkAuditState;

	@ApiModelProperty(value = "无法核对原因")
	private String unableCheckReason;

	@ApiModelProperty(value = "质检结果")
	private String examineResult;

	@ApiModelProperty(value = "当前用户职位", example = "")
	private Integer currentUserPosition;

	@ApiModelProperty(value = "当前用户ID", example = "")
	private String currentUserId;

	@ApiModelProperty(value = "客户状态", example = "")
	private Integer status;

	@ApiModelProperty(value = "call_case_relative表user_id对应用户的职位", example = "")
	private Integer position;

    //	发函状态（0：全部；1：发函的；2：未发函的）
	@ApiModelProperty(value = "sendState", example = "")
	private String sendState;
	
	private String fpStatus;// 案件以客户纬度分案，0表示未分案，1表示分案
	
	private String gsStatus;// 0表示未归属，1表示已归属 客户分配之后,变成归属。组长取消之后变成已分配未归属
	
	/**
	 * 委案结束时间,用作判断过期状态
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	private Date takeBackPlanTime;
	
	private String groupId;//组id
	
	private String leaveDesc;//留案备注
	
	private String custLetterType; //客户函件分类
	
	private String editAddress;//户籍地址修复状态
	
    private String editAddress2;//居住地址修复状态
	
	private String editAddress3;//单位地址修复状态
	
	private String editAddress4;//其他地址修复状态
	
	private String editAddressName;
	private String editAddressName2;
	private String editAddressName3;
	private String editAddressName4;
	
	private String sendAddress;//已发函地址
	
	private String registerAddress2;//修复后的户籍地址
	
	private String liveAddress2;//修复后的居住地址
	
	private String unitAddress2;//修复后的单位地址
	
	private String otherAddress2;//修复后的其他地址  
	
	private BigDecimal score; //征信评分
	
	private BigDecimal scoreBegin; //征信评分
	
	private BigDecimal scoreEnd; //征信评分
	
	private String sxType; //失信分类
	
	private String selectAddress;//客户选择的发函地址
	
	private String innerRecover; // 是否内部收回 0否 1是 默认否
	
	private String innerLeave;//是否内部留案 0否 1是 默认否
	
	private String noInnerLeave;
	
	private Integer noCaseState;
	
	private String leaveType;//留案类型  1代表正常留案  2代表内部留案
	
	private String addressResult;//地址核查结果
	
	private String hjXsd;//户籍地址相似度
	
	private String jtXsd;//家庭地址相似度
	
	private String jhXsd;//家户地址相似度
	
	private String lastuseTime;//最近用邮时间
	
	private String lsStatus;//临时发函标识
	
	private String thStatus;//签收退回标识，1表示已经退回
	
	private String showPage;//是否分页
	
	private String showAll;//是否查询已经过期的案件
	
	//函件类型 1代表 普通件  2代表密保件
    private String letterType;
	
	public String getEditAddressName() {
		return AddressResultEnum.getNameByValue(this.editAddress);
	}

	public String getEditAddressName2() {
		return AddressResultEnum.getNameByValue(this.editAddress2);
	}

	public String getEditAddressName3() {
		return AddressResultEnum.getNameByValue(this.editAddress3);
	}

	public String getEditAddressName4() {
		return AddressResultEnum.getNameByValue(this.editAddress4);
	}
}
